/*
 *
 *  Copyright (C) 2012-2024
 *  All rights reserved, Designed By 杭州连线客信息技术有限公司
 *  注意：
 *  本软件为杭州连线客信息技术有限公司开发研制，未经购买不得使用
 *  购买后可获得全部源代码（禁止转卖、分享、上传到码云、github等开源平台）
 *  一经发现盗用、分享等行为，将追究法律责任，后果自负
 *
 */

package com.lxk.finance.domain.bo;

import com.lxk.finance.enums.AccEnums;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;

/**
 * 用户提现申请
 *
 * @author heyi
 * 2024/10/16
 */
@Data
@Accessors(chain = true)
public class UserApplyBo {
    /**
     * 提现类型
     */
    @NotNull(message = "请选择提现类型", groups = {Common.class})
    private AccEnums.Type type;
    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不为空", groups = {Common.class})
    private Long userId;
    /**
     * 用户类型
     */
    @NotBlank(message = "用户类型不为空", groups = {Common.class})
    private String userType;
    /**
     * 提现金额
     */
    @NotNull(message = "请输入提现金额", groups = {Common.class})
    @DecimalMin(value = "1", message = "提现金额必须大于1", groups = {Common.class})
    private BigDecimal amount;
    /**
     * 提现手续费
     */
    @NotNull(message = "请输入提现手续费", groups = {Common.class})
    private BigDecimal serviceFeeRate;
    /**
     * 账户类型
     */
    @NotNull(message = "请选择账户类型")
    private AccUserAccountBo.AccountType accountType;
    /**
     * 银行卡号
     */
    @NotBlank(message = "请输入银行卡号", groups = Bank.class)
    private String bankCardNo;
    /**
     * 银行名称
     */
    @NotBlank(message = "请输入银行名称", groups = Bank.class)
    private String bankName;
    /**
     * 真实姓名
     * 如果是银行卡，则是持卡人姓名
     * 如果是支付宝，则是真实姓名
     */
    @NotNull(message = "请输入真实姓名", groups = {Bank.class, ALI.class})
    private String realName;

    /**
     * 手机号
     * 如果是支付宝，则是对应的支付宝手机号
     */
    @NotBlank(message = "请输入手机号", groups = {ALI.class})
    @Length(min = 11, max = 11, message = "手机号格式不正确")
    private String phone;


    /**
     * 备注
     */
    private String remark;
    /**
     * 微信openId
     */
    @NotBlank(message = "请输入微信openId", groups = Wx.class)
    private String wxOpenId;


    public interface Common {
    }

    public interface Bank {
    }

    public interface ALI {
    }

    public interface Wx {
    }
}
